<?php
// 常量表达式
// const ONE = 1;
// const TWO = ONE * 2;
//
// class C {
//     const THREE = TWO + 1;
//     const ONE_THIRD = ONE / self::THREE;
//     const SENTENCE = 'The value of THREE is '.self::THREE;
//
//     public function f($a = ONE + self::THREE) {
//         return $a;
//     }
// }
//
// echo (new C)->f()."\n";
// echo C::SENTENCE . "\n";

// 常量数组
// const ARR = ['a', 'b'];
// echo ARR[0];

// 可变参数
// function f($req, $opt = null, ...$params) {
//     printf('$req: %d; $opt: %d; number of params: %d'."\n",
//            $req, $opt, count($params));
// }
//
// f(1);
// f(1, 2);
// f(1, 2, 3);
// f(1, 2, 3, 4);
// f(1, 2, 3, 4, 5);

// 参数解包
// function add($a, $b, $c) {
//     return $a + $b + $c;
// }
//
// $operators = [2, 3];
// echo add(1, ...$operators);

// **幂运算
// $a = 2 ** 3;
// echo $a;

// use 函数和常量
namespace Name\Space {
    const FOO = 42;
    function f() { echo __FUNCTION__."\n"; }
}

namespace {
    use const Name\Space\FOO;
    use function Name\Space\f;

    echo FOO."\n";
    f();
}
